home *** CD-ROM | disk | FTP | other *** search
Wrap
/* ** Amster Search Script ** $VER: AmsterSearch_Triton.rexx 0.13 (22.10.2000) ** ** By Roger Clark (kaedric@texas.net) ** October 22, 2000 ** ** This script requires the rexxreqtools.library which can be found on Aminet. ** util/rexx/RexxReqTools.lha ** ** This script requires the tritonrexx.library which can be found on Aminet. ** util/rexx/TritonRexx376.lha ** ** This script requires the triton.library which can be found on Aminet. ** dev/gui/tri20b1usr.lha ** */ Options Results Signal On Break_C Signal On failure Signal On halt Signal On ioerr Signal On syntax Parse Arg Datafile MP3Title. = "" MP3Title.0 = 0 Dir = "" SaveDir = "" SaveFile = "" HelpBool = 0 SaveResultsBool = 0 AutoHopBool = 0 app = '00000000'x window = '00000000'x Link.0 = "Unknown" Link.1 = "14.4K Modem" Link.2 = "28.8K Modem" Link.3 = "33.6K Modem" Link.4 = "56K Modem" Link.5 = "ISDN 64K" Link.6 = "ISDN 128K" Link.7 = "Cable" Link.8 = "DSL" Link.9 = "T1" Link.10 = "T3+" DefaultFile = "MP3Search.dat" /* Change as needed */ DefaultSave = "MP3Search.results" /* Change as needed */ If ~Show('L','rexxsupport.library') Then Do If ~addlib('rexxsupport.library',10,-30,0) Then Do Say 'Could not access the rexxsupport.library!' Exit 10 End End If ~Show('L','tritonrexx.library') Then Do If ~addlib('tritonrexx.library',10,-30,0) Then Do Say 'Could not access the tritonrexx.library!' Exit 10 End End If ~Show('L','rexxreqtools.library') Then Do If ~addlib('rexxreqtools.library',10,-30,0) Then Do Say 'Could not access the rexxreqtools.library!' Exit 10 End End Call ReadFile Call ReadServers windowtags = WindowID(1), WindowTitle('Amster MP3 Search'), QuickHelpOn(HelpBool), BeginMenu('Project'), MenuItem('L_Load File',1), MenuItem('S_Save File',2), 'ItemBarLabel', MenuItem('A_Sort A->Z',3), MenuItem('Z_Sort Z->A',4), 'ItemBarLabel', MenuItem('H_Quick Help',6) 'TRMN_Flags TRMF_CHECKIT', MenuItem('R_Save Search Results',7) 'TRMN_Flags TRMF_CHECKIT', MenuItem('C_Auto-Change Servers',16) 'TRMN_Flags TRMF_CHECKIT', 'ItemBarLabel', MenuItem('?_About',8), MenuItem('Q_Quit',9), 'HorizGroupA', 'Space', 'VertGroupA', 'Space', NamedSeparatorIN(MP3Title.0||' Song Titles',20), 'Space', ListSS('MP3Title',5,0,0), 'Space', NamedFrameBox('Options'), 'VertGroupEA', 'Space', 'HorizGroupEA', 'Space', Button('Add Song',10) 'TRDO_QuickHelpString "Add a song to the search list."', Button('Edit Song',11) 'TRDO_QuickHelpString "Edit selected song title."', Button('Remove Song',12) 'TRDO_QuickHelpString "Remove selected song from the search list."', 'Space', 'EndGroup', 'Space', 'HorizGroupEA', 'Space', Button('Search',13) 'TRDO_QuickHelpString "Search for the selected song."', Button('Search All',14) 'TRDO_QuickHelpString "Search for all songs in the search list."', Button('Stop Search',15) 'TRDO_QuickHelpString "Stop Current Search."', 'Space', 'EndGroup', 'Space', 'EndGroup', 'EndGroup', 'Space', 'EndGroup', 'EndProject' app = TR_CREATEAPP('TRCA_Name Listview') If app ~= '00000000'x Then Do window = TR_OPENPROJECT(app,windowtags) If window ~= '00000000'x Then Do Done = 0 Call TR_SETATTRIBUTE(window,15,'TRAT_Disabled',1) If MP3Title.0 = 0 Then Do Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1) End Do While Done ~= 1 Call TR_WAIT(app,'') Do While TR_HANDLEMSG(app,'event') If event.trm_class = 'TRMS_NEWVALUE' Then Do Select When event.trm_id = 5 Then Do If BitAnd(D2X(event.trm_qualifier),'0200'x) = '0200'x Then Do Call SearchSingle End End When event.trm_id = 6 Then Do HelpBool = 1 - HelpBool Call TR_SETATTRIBUTE(window,0,'TRWI_QuickHelp',HelpBool) End When event.trm_id = 7 Then Do SaveResultsBool = 1 - SaveResultsBool If SaveResultsBool = 1 then Call GetSaveFileName End When event.trm_id = 16 Then Do AutoHopBool = 1 - AutoHopBool End Otherwise NOP End End If event.trm_class = 'TRMS_ACTION' Then Do Select When event.trm_id = 1 Then Do DataFile = "" Call ReadFile Call TR_SETATTRIBUTE(window,20,'TRAT_Text',MP3Title.0||' Song Titles') Call TR_SETATTRIBUTE(window,5,'TROB_Listview',MP3Title) If MP3Title.0 = 0 Then Do Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1) End Else Do Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',0) End End When event.trm_id = 2 Then Do Call WriteFile End When event.trm_id = 3 Then Do M = 1 Do While (9 * M + 4) < MP3Title.0 M = M * 3 + 1 End Do While M > 0 K = MP3Title.0 - M Do J = 1 To K Q = J Do While Q > 0 L = Q + M If MP3Title.Q <= MP3Title.L Then Leave Tmp = MP3Title.Q MP3Title.Q = MP3Title.L MP3Title.L = tmp Q = Q - M End End M = M % 3 End Call TR_SETATTRIBUTE(window,5,'TROB_Listview',MP3Title) End When event.trm_id = 4 Then Do M = 1 Do While (9 * M + 4) < MP3Title.0 M = M * 3 + 1 End Do While M > 0 K = MP3Title.0 - M Do J = 1 To K Q = J Do While Q > 0 L = Q + M If MP3Title.Q >= MP3Title.L Then Leave Tmp = MP3Title.Q MP3Title.Q = MP3Title.L MP3Title.L = tmp Q = Q - M End End M = M % 3 End Call TR_SETATTRIBUTE(window,5,'TROB_Listview',MP3Title) End When event.trm_id = 6 Then Do Call TR_SETATTRIBUTE(window,6,TRMN_Flags,TRMF_CHECKED) End When event.trm_id = 7 Then Do Call TR_SETATTRIBUTE(window,7,TRMN_Flags,TRMF_CHECKED) End When event.trm_id = 8 Then Do Call rtezrequest("AmsterSearch_Triton.rexx v0.13"||D2C(10)||"By: Roger Clark (kaedric@texas.net)"||D2C(10)||"Date: October 22, 2000","Thanks","About AmsterSearch_Triton.rexx") End When event.trm_id = 9 Then Do Done = 1 End When event.trm_id = 10 Then Do NewSong = rtgetstring("","Enter New Search String","Add Song") If NewSong ~= "" Then Do NewSong = Compress(NewSong,D2C(34)||D2C(39)) MP3Title.0 = MP3Title.0 + 1 MP3Count = MP3Title.0 MP3Title.MP3Count = NewSong Call TR_SETATTRIBUTE(window,20,'TRAT_Text',MP3Title.0||' Song Titles') Call TR_SETATTRIBUTE(window,5,'TROB_Listview',MP3Title) End If MP3Title.0 > 0 Then Do Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',0) End End When event.trm_id = 11 Then Do SongNumber = TR_GETATTRIBUTE(window,5,'TRAT_Value')+1 NewSong = rtgetstring(MP3Title.Songnumber,"Edit Song Title","Edit Song") If NewSong ~= "" Then Do NewSong = Compress(NewSong,D2C(34)||D2C(39)) MP3Title.SongNumber = NewSong Call TR_SETATTRIBUTE(window,5,'TROB_Listview',MP3Title) End End When event.trm_id = 12 Then Do If MP3Title.0 > 0 Then Do SongNumber = TR_GETATTRIBUTE(window,5,'TRAT_Value')+1 Do Loop = SongNumber to MP3Title.0 - 1 X = Loop + 1 MP3Title.Loop = MP3Title.X End MP3Title.0 = MP3Title.0 - 1 Call TR_SETATTRIBUTE(window,20,'TRAT_Text',MP3Title.0||' Song Titles') Call TR_SETATTRIBUTE(window,5,'TROB_Listview',MP3Title) End If MP3Title.0 = 0 Then Do Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1) End End When event.trm_id = 13 Then Do Call SearchSingle End When event.trm_id = 14 Then Do Call SearchAll End When event.trm_id = 16 Then Do Call TR_SETATTRIBUTE(window,16,TRMN_Flags,TRMF_CHECKED) End Otherwise NOP End End If event.trm_class = 'TRMS_CLOSEWINDOW' Then Do Done = 1 End End End Call TR_CLOSEPROJECT(window) End Call TR_DELETEAPP(app) End Exit ReadFile: If Datafile = "" then Do If Dir = "" then Dir = Pragma("D") Datafile = rtfilerequest(Dir,DefaultFile,"Load File...",,,) If Datafile = "" then Return End If Exists(Datafile) then Do Call Open(In,Datafile,"R") x = 1 Do Until EOF(In) MP3Title.x = ReadLn(In) MP3Title.x = Compress(MP3Title.x,D2C(34)||D2C(39)) x = x + 1 End Call Close(In) MP3Title.0 = x - 2 If MP3Title.0 < 0 Then MP3Title.0 = 0 If LastPos('/',Datafile) > LastPos(':',Datafile) then Do DefaultFile = SubStr(Datafile,LastPos('/',Datafile)+1) Dir = Left(Datafile,LastPos('/',Datafile)) End Else Do DefaultFile = SubStr(Datafile,LastPos(':',Datafile)+1) Dir = Left(Datafile,LastPos(':',Datafile)) End End Return WriteFile: If Dir = "" then Dir = Pragma("D") Datafile = rtfilerequest(Dir,DefaultFile,"Save As...",,,) If DataFile ~= "" Then Do Call Open(Out,DataFile,"W") Do Loop = 1 to MP3Title.0 Call WriteLn(Out,MP3Title.Loop) End Call Close(Out) If LastPos('/',Datafile) > LastPos(':',Datafile) then Do DefaultFile = SubStr(Datafile,LastPos('/',Datafile)+1) Dir = Left(Datafile,LastPos('/',Datafile)) End Else Do DefaultFile = SubStr(Datafile,LastPos(':',Datafile)+1) Dir = Left(Datafile,LastPos(':',Datafile)) End End Return GetSaveFileName: If SaveDir = "" then SaveDir = Pragma("D") SaveFile = rtfilerequest(Dir,DefaultSave,"Save Results as...",,,) If SaveFile = "" Then Do SaveResultsBool = 0 Call TR_SETATTRIBUTE(window,7,TRMN_Flags,TRMF_CHECKED) End Return SaveResults: If SONG.COUNT > 0 Then Do If ~Open(Out,SaveFile,"A") then Call Open(Out,SaveFile,"W") Address 'AMSTER.1' 'GETSERVERSTATS INFO' Call WriteLn(Out,'Server: 'INFO.SERVER':'INFO.PORT) Call WriteLn(Out,Date() Time()' - Found 'SONG.COUNT' matches for 'SongTitle) Do SRLoop = 0 to SONG.COUNT-1 SongName = SubStr(SONG.SRLoop.TITLE,LastPos('\',SONG.SRLoop.TITLE)+1) Speed = SONG.SRLoop.LINK Hours = SONG.SRLoop.TIME % 3600 Minutes = (SONG.SRLoop.TIME % 60) - (Hours * 60) Seconds = SONG.SRLoop.TIME - (Hours * 3600) - (Minutes * 60) If Hours > 0 then Playtime = Hours":"Right("00"||Minutes,2)":"Right("00"||Seconds,2) Else Playtime = Right("00"||Minutes,2)":"Right("00"||Seconds,2) Call WriteLn(Out,'Match 'SRLoop+1) Call WriteLn(Out,'Title : 'SongName) Call WriteLn(Out,'User : 'SONG.SRLoop.USER' ('Link.Speed')') Call WriteLn(Out,'Size : 'Right(AddComma(SONG.SRLoop.SIZE),11)' bytes Play Time: 'Playtime) Call WriteLn(Out,'Bitrate: 'Right(SONG.SRLoop.BITRATE,11)' kbps Frequency: 'SONG.SRLoop.FREQUENCY' kHz') Call WriteLn(Out,' ') End Call WriteLn(Out,' ') Call Close(Out) End Return AddComma: Procedure Arg String NewString = "" If Length(String) < 4 Then Return String String = Translate(String,"",".") String = Reverse(String) Do Loop = 1 to Length(String) By 3 NewString = NewString||SubStr(String,Loop,3)||"," End NewString = Reverse(NewString) NewString = Strip(NewString,"L",",") NewString = Strip(NewString) Return NewString CheckOnline: If Show('P','AMSTER.1') = 0 then Do Call rtezrequest('Could not locate Amster''s Arexx port. Exiting script.','OK','Host Environment Not Found') Signal Done End Address 'AMSTER.1' 'ISONLINE' If RC = 0 then Do Z = 0 Do While RC = 0 Z = Z + 1 Call Delay(50) Address 'AMSTER.1' 'ISONLINE' If RC = 0 & Z = 20 Then Leave End End Return ReadServers: Dir = Pragma("D") Servers = "Amster.servers" If ~Exists(Servers) Then Do Servers = rtfilerequest(Dir,Servers,"Select Server List",,,) If Servers = "" Then Do X = 0 Y = 0 Return End End Call Open(In,Servers,"R") X = 1 Y = 1 Do Until EOF(In) ServerData = ReadLn(In) IPAddress.X = Word(ServerData,1) PortNumber.X = Word(ServerData,2) X = X + 1 End X = X - 1 Call Close(In) Return ChangeServers: If Y = 0 Then Do Address 'AMSTER.1' 'CONNECT' End Else Do Address 'AMSTER.1' 'CONNECT SERVER 'IPAddress.Y' PORT 'PortNumber.Y Y = Y + 1 If Y > X then Do Y = 1 StopSearch = 1 End End Call CheckOnline If Z = 20 then Signal ChangeServers Return SearchSingle: SongNumber = TR_GETATTRIBUTE(window,5,'TRAT_Value')+1 Call CheckOnline If AutoHopBool = 1 Then Do Call TR_SETATTRIBUTE(window,10,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,15,'TRAT_Disabled',0) End StopSearch = 0 Search: Address 'AMSTER.1' 'SEARCH "'MP3Title.SongNumber'" SONG' If SaveResultsBool = 1 Then Do SongTitle = MP3Title.SongNumber Call SaveResults End If AutoHopBool = 1 Then Do Call TR_HANDLEMSG(app,'event') If event.trm_class = 'TRMS_ACTION' & event.trm_id = 15 Then Do StopSearch = 1 Call TR_SETATTRIBUTE(window,10,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,15,'TRAT_Disabled',1) End If event.trm_class = 'TRMS_CLOSEWINDOW' Then Do Done = 1 StopSearch = 1 End If StopSearch = 0 Then Do If SONG.COUNT > 0 Then Call Delay(500) Call ChangeServers Signal Search End End Return SearchAll: Call CheckOnline Call TR_SETATTRIBUTE(window,10,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1) Call TR_SETATTRIBUTE(window,15,'TRAT_Disabled',0) StopSearch = 0 SearchLoop: Do Loop = 1 to MP3Title.0 Call CheckOnline Call TR_HANDLEMSG(app,'event') If event.trm_class = 'TRMS_ACTION' & event.trm_id = 15 Then Do StopSearch = 1 Leave End If event.trm_class = 'TRMS_CLOSEWINDOW' Then Do Done = 1 Leave End Call TR_SETATTRIBUTE(window,5,'TRAT_Value',Loop-1) Address 'AMSTER.1' 'SEARCH "'MP3Title.Loop'" SONG' If SaveResultsBool = 1 Then Do SongTitle = MP3Title.Loop Call SaveResults End End If AutoHopBool = 1 & StopSearch = 0 Then Do Call ChangeServers Signal SearchLoop End Call TR_SETATTRIBUTE(window,10,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,11,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,12,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,13,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,14,'TRAT_Disabled',0) Call TR_SETATTRIBUTE(window,15,'TRAT_Disabled',1) Return break_c: failure: halt: ioerr: syntax: Call rtezrequest('Notify the author about this!'||D2C(10)||'+++ Error' rc 'in line' sigl '-' ERRORTEXT(rc),'Oops!','Error!') Done: If app ~= '00000000'x THEN Call TR_DELETEAPP(app) Exit